<?php
namespace Views;

require_once('\Models\Database.php');
require_once('\Models\Album.php');
require_once('\Models\ImageCatalog.php');
require_once('\Views\PageView.php');
require_once('\Common\Settings.php');

class ManageAlbumsView
{
	public $tryCreateAlbum		= "tryCreateAlbum";
	public $tryUpdateAlbum		= "tryUpdateAlbum";
	public $tryDeleteAlbum 		= "tryDeleteAlbum";
	public $tryUploadImage 		= "tryUploadImage";
	public $tryUpdateAlbumImages= "tryUpdateAlbumImages";
	public $deleteImage			= "deleteImage";
	public $albumCreated 		= "albumCreated";
	public $albumUpdated 		= "albumUpdated";
	public $imageAdded 			= "imageAdded";
	public $imagesDeleted		= "imagesDeleted";
	public $file				= "file";
	
	private $_pv = null;
	
	public function __construct()
	{
		$this->_pv = new \Views\PageView();
	}
	
	/**
	 * Skapar registreringformulär
	 * @return String HTML-formulär
	 */
	public function createAlbumForm()
	{
		$html = 
		"<p>
			<form method='POST'>
				<fieldset>
					<p class='label-header'><label for='".$this->_pv->albumTitle."'>Albumnamn</label></p>
					<input type='text' maxlength='".\Common\Settings::ALBUM_TITLE_LENGTH."' id='".$this->_pv->albumTitle."' name='".$this->_pv->albumTitle."' />
					<p class='label-header'><label for='".$this->_pv->albumYear."'>År</label></p>
					<select id='".$this->_pv->albumYear."' name='".$this->_pv->albumYear."'>";
		
		$year = date("Y");
		
		// De första albumet startade år 1963
		for ($i=$year; $i>=1963; $i--)
			$html .= "<option value='$i'>$i</option>";
					
		
	$html .=		"</select>
					<p class='label-header'><label for='".$this->_pv->albumDescription."'>Beskrivning</label></p>
					<textarea maxlength='".\Common\Settings::ALBUM_DESCRIPTION_LENGTH."' name=".$this->_pv->albumDescription." id='".$this->_pv->albumDescription."' rows='5' cols='60'></textarea><br />
					<input type='hidden' name='".$this->tryCreateAlbum."' />
					<p class='label-header'><input type='submit' value='Skapa' /></p>
				</fieldset>
			</form>
		</p>";
		
		return $html;
	}
	
	/**
	 * Formulär för att editera ett album
	 * @param $album Album
	 * @return $html HTML-string
	 */
	public function editAlbumForm(\Models\Album $album)
	{
		$html ="
		<p>
		<form method='post'>
			<p class='label-header'><label for='".$this->_pv->albumTitle."'>Titel</label></p>
			<input type='text' maxlength='".\Common\Settings::ALBUM_TITLE_LENGTH."' id='".$this->_pv->albumTitle."' name='".$this->_pv->albumTitle."' value='".$album->Title()."'><br/>
			<p class='label-header'><label for='".$this->_pv->albumYear."'>År</label></p>
			<select id='".$this->_pv->albumYear."' name='".$this->_pv->albumYear."'>";
			
		$year = date("Y");
		
		// De första albumet startade år 1963
		for ($i=$year; $i>=1963; $i--)
		{
			// Väljer fördefinerat årtal
			if($i == $album->Year())
				$html .= "<option value='$i' selected='selected'>$i</option>";
			else
				$html .= "<option value='$i'>$i</option>";
		}		
		
		$html .=	
			"</select>
			<p class='label-header'><label for='".$this->_pv->albumDescription."'>Beskrivning</label></p>
			<textarea maxlength='".\Common\Settings::ALBUM_DESCRIPTION_LENGTH."' name=".$this->_pv->albumDescription." id='".$this->_pv->albumDescription."' rows='5' cols='60'>".$album->Description()."</textarea>
			<input type='hidden' name='".$this->tryUpdateAlbum."' /><br />
			<input type='submit' value='Uppdatera' />
			<input type='button' 
			onClick=\"location.href='".$this->_pv->getPageURL(false)."?".$this->_pv->controller."=".$this->_pv->listAlbums."'\"  
			value='Avbryt'>
		</form>";
		
		// Formulär för borttagning
		$html .= 
		"<form method='post' 
		action='".$this->_pv->getPageURL(false)."?".$this->_pv->controller."=".$this->_pv->listAlbums."' 
		OnSubmit=\"return confirm('".\Common\Strings::CONFIRM_DELETE_ALBUM."');\">
			<input type='hidden' name='".$this->tryDeleteAlbum."' value='".$album->AlbumId()."' />
			<p><input type='submit' value='Radera album' class='erase-btn' /></p>
		</form>
		</p>";
		
		return $html;
	}
	
	/**
	 * Formulär för att uppladdning av bilder
	 * @return $string HTML-string
	 */
	public function addImageForm($albumId)
	{
		$html = 
		"<p>
			<form method='post' enctype='multipart/form-data' 
		action='?".$this->_pv->controller."=".$this->_pv->editAlbum."&".$this->_pv->albumId."=".$albumId."'>
			<input type='file' name='".$this->file."' id='".$this->file."' />
			<input type='hidden' name='".$this->tryUploadImage."' />
			<input type='submit' name='submit' value='Ladda upp' />
			</form>
		</p>";
		
		return $html;
	}
	
	/**
	 * Hämtar formulär för samtliga bilder i albumet
	 * @param $images ImageArray
	 * @return $html string
	 */
	public function getImagesForms(\Models\ImageArray $images)
	{	
		if(count($images->get())==0)
			return false;
		
		$html = 
		"<p>
		<form method='post'>
			<table class='album-images-table'>
				<thead>
					<tr>
						<th>Radera</th>
						<th>Bild</th>
						<th>Beskrivning</th>
					</tr>
				</thead>
				<tbody>
		";
		
		foreach ($images->get() as $image)
		{
			$html .=
			"<tr>
				<td>
					<input type='checkbox' name='".$this->deleteImage."_".$image->ImageId()."' value='".$image->ImageId()."'>Ta bort</input>
				</td>
				<td>
					<img src=".$image->ThumbUrl()." />
				</td>
				<td>
					<input type='text' maxlength='".\Common\Settings::IMAGE_DESCRIPTION_LENGTH."' name='".$this->_pv->imageDescription."_".$image->ImageId()."' id='".$this->_pv->imageDescription."_".$image->ImageId()."' value='".$image->Description()."' />
					<input type='hidden' name='".$this->tryUpdateAlbumImages."' />
				</td>
			</tr>";
		}

		$html .= 
		"		</tbody>
			</table>
			<input type='submit' value='Uppdatera' />
		</form>
		</p>";
		
		return $html;
	}
	
	/**
	 * Returnerar en lista över databasens album
	 * @param $allAlbums AlbumArray
	 * @return $html HTML-string
	 */
	public function getAlbumsList(\Models\AlbumArray $allAlbums)
	{
		$html ="";
		
		// Loopar igenom användarna och skriver ut info
		foreach ($allAlbums->get() as $album)
		{
			$html .=  
			"<p>
			<form method='post' 
			action='?".$this->_pv->controller."=".$this->_pv->editAlbum."&".$this->_pv->albumId."=".$album->AlbumId()."'>
				<span>".$album->Title()." (".$album->Year().")</span>
				<input type='submit' value='Ändra' />
			</form>
			</p>";
		}
		
		return $html;
	}
	
	/**
	 * @param $albumId int
	 * @return html-string
	 */
	public function getGalleryLink($albumId)
	{
		return "<p class='float-right'><a target='_blank' href='gallery.php?".$this->_pv->albumId."=".$albumId."'>&raquo;Visa albumet</a></p>";
	}
	
	/**
	 * Kollar om användaren har uppdaterat ett album
	 * @return Bool
	 */
	public function albumUpdated()
	{
		if(isset($_GET[$this->_pv->status]) && $_GET[$this->_pv->status] == $this->albumUpdated)
			return true;
		else
			return false;
	}
	
	/**
	 * Kollar om användaren har tagit bort bilder ur ett album
	 * @return Bool
	 */
	public function imagesDeleted()
	{
		if(isset($_GET[$this->_pv->status]) && $_GET[$this->_pv->status] == $this->imagesDeleted)
			return true;
		else
			return false;
	}
	
	/**
	 * Hämtar ID för det album som ska tas bort
	 * @return int | Bool
	 */
	public function getAlbumIdToDelete()
	{
		// Om ID är satt och är numeriskt
		if(isset($_POST[$this->tryDeleteAlbum]) && is_numeric($_POST[$this->tryDeleteAlbum]))
			return $_POST[$this->tryDeleteAlbum];
		else
			return false;
	}

	/**
	 * Kollar om användaren är på sidan för att skapa nytt album
	 * @return Bool
	 */
	public function isCreatingAlbum()
	{
		if(isset($_GET[$this->_pv->controller]) && $_GET[$this->_pv->controller] == $this->_pv->createAlbum)
			return true;
		else
			return false;
	}
	
	/**
	 * Kollar om användaren är på sidan för att skapa nytt album
	 * @return Bool
	 */
	public function isListingAlbums()
	{
		if(isset($_GET[$this->_pv->controller]) && $_GET[$this->_pv->controller] == $this->_pv->listAlbums)
			return true;
		else
			return false;
	}
	
	/**
	 * Kollar om användaren är på sidan för att editera album
	 * @return Bool
	 */
	public function isEditingAlbum()
	{
		if(isset($_GET[$this->_pv->controller]) && $_GET[$this->_pv->controller] == $this->_pv->editAlbum)
			return true;
		else
			return false;
	}
}

?>